<?xml version="1.0" encoding="utf-8"?>
<!--
                                                                                     
 h       t     t                ::       /     /                     t             / 
 h       t     t                ::      //    //                     t            // 
 h     ttttt ttttt ppppp sssss         //    //  y   y       sssss ttttt         //  
 hhhh    t     t   p   p s            //    //   y   y       s       t          //   
 h  hh   t     t   ppppp sssss       //    //    yyyyy       sssss   t         //    
 h   h   t     t   p         s  ::   /     /         y  ..       s   t    ..   /     
 h   h   t     t   p     sssss  ::   /     /     yyyyy  ..   sssss   t    ..   /     
                                                                                     
	<https://y.st./>
	Copyright © 2017 Alex Yst <mailto:copyright@y.st>

	This program is free software: you can redistribute it and/or modify
	it under the terms of the GNU General Public License as published by
	the Free Software Foundation, either version 3 of the License, or
	(at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program. If not, see <https://www.gnu.org./licenses/>.
-->
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<base href="https://y.st./en/weblog/2017/08-August/31.xhtml" />
		<title>include.d is nearly stabilised &lt;https://y.st./en/weblog/2017/08-August/31.xhtml&gt;</title>
		<link rel="icon" type="image/png" href="/link/CC_BY-SA_4.0/y.st./icon.png" />
		<link rel="stylesheet" type="text/css" href="/link/basic.css" />
		<link rel="stylesheet" type="text/css" href="/link/site-specific.css" />
		<script type="text/javascript" src="/script/javascript.js" />
		<meta name="viewport" content="width=device-width" />
	</head>
	<body>
		<nav>
			<p>
				<a href="/en/">Home</a> |
				<a href="/en/a/about.xhtml">About</a> |
				<a href="/en/a/contact.xhtml">Contact</a> |
				<a href="/a/canary.txt">Canary</a> |
				<a href="/en/URI_research/"><abbr title="Uniform Resource Identifier">URI</abbr> research</a> |
				<a href="/en/opinion/">Opinions</a> |
				<a href="/en/coursework/">Coursework</a> |
				<a href="/en/law/">Law</a> |
				<a href="/en/a/links.xhtml">Links</a> |
				<a href="/en/weblog/2017/08-August/31.xhtml.asc">{this page}.asc</a>
			</p>
			<hr/>
			<p>
				Weblog index:
				<a href="/en/weblog/"><abbr title="American Standard Code for Information Interchange">ASCII</abbr> calendars</a> |
				<a href="/en/weblog/index_ol_ascending.xhtml">Ascending list</a> |
				<a href="/en/weblog/index_ol_descending.xhtml">Descending list</a>
			</p>
			<hr/>
			<p>
				Jump to entry:
				<a href="/en/weblog/2015/03-March/07.xhtml">&lt;&lt;First</a>
				<a rel="prev" href="/en/weblog/2017/08-August/30.xhtml">&lt;Previous</a>
				<a rel="next" href="/en/weblog/2017/09-September/01.xhtml">Next&gt;</a>
				<a href="/en/weblog/latest.xhtml">Latest&gt;&gt;</a>
			</p>
			<hr/>
		</nav>
		<header>
			<h1>include.d is nearly stabilised</h1>
			<p>Day 00908: Thursday, 2017 August 31</p>
		</header>
<img src="/img/CC_BY-SA_4.0/y.st./weblog/2017/08/31.jpg" alt="A tree branch full of pink flowers" class="weblog-header-image" width="800" height="480" />
<section id="general">
	<h2>General news</h2>
	<p>
		I was the only volunteer today, for some reason.
		That said, there was only enough work to keep me busy for a little over an hour, so it wasn&apos;t a problem that I was the only one there besides the boss/coordinator/whatever-they-are.
	</p>
	<p>
		My shift leader paid me back the remainder of the money I lent them today.
		They kept asking for extensions on the loan, and kept paying back parts of it, so little by little, I got the money back.
		I actually told them they could keep it as long as they needed, but they kept setting their own deadlines for when they&apos;d pay it back, which they kept being unable to meet.
		They were worked up about the debt, but I actually wasn&apos;t.
		I remained totally laid back about it the whole time.
		I think this exercise in trust on my part was a success.
	</p>
	<p>
		A customer gave me a Canadian quarter as a tip today.
		I&apos;m not sure what to do with it, but it was amusing.
	</p>
	<p>
		Yesterday, I found that the new registers were putting the name &quot;Alex Y&quot; on every receipt issued by my till.
		At the time, I kind of wished they&apos;d said &quot;A Yst&quot;, &quot;Yst&quot;, &quot;Alex Yst&quot;, or something else that used my full surname, as it&apos;s my surname that I more closely identify as.
		Today I realised how stupid that wish was.
		Sure, I identify by that name, but I don&apos;t like my workplace or our products.
		Do I want my name on them?
		No.
		I&apos;m perfectly contented to have the tills just call me &quot;Alex Y&quot; &quot;Alex&quot; is a generic enough name, and wye could stand for anything.
	</p>
	<p>
		I ran into another issue with the new system.
		If I accidentally tell the register the customer is paying in cash, there&apos;s no way to charge their card.
		There&apos;s no way to fix it.
		Instead, I have to go get entirely new pizzas with new barcodes, and ring in their order again.
		What a mess.
		This new system has its issues.
	</p>
	<p>
		My <a href="/a/canary.txt">canary</a> still sings the tune of freedom and transparency.
	</p>
</section>
<section id="include.d">
	<h2><a href="https://git.volatile.ch./y.st./include.d/releases">include.d</a></h2>
	<p>
		I&apos;ve been wanting a way to provide more-specific return types for methods in child classes than in parent classes.
		My abstract <abbr title="Uniform Resource Identifier">URI</abbr> class provides a base for <abbr title="Uniform Resource Identifier">URI</abbr>-like strings to be dealt with, while the concrete <abbr title="Uniform Resource Identifier">URI</abbr> class descends from it and provides a specific implementation for generic <abbr title="Uniform Resource Identifier">URI</abbr>s.
		Child classes of the concrete <abbr title="Uniform Resource Identifier">URI</abbr> class implement specific <abbr title="Uniform Resource Identifier">URI</abbr> schemes with syntax that conforms to the generic syntax, while invalid (usually legacy) <abbr title="Uniform Resource Identifier">URI</abbr> schemes can descend from the abstract class to avoid the generic regulations that they don&apos;t conform to.
		The abstract class uses itself as a return type for several methods.
		I was thinking it&apos;d be nice to have the concrete class narrow down the return types to only valid <abbr title="Uniform Resource Identifier">URI</abbr> classes.
		Now I realise that would be a bad idea.
		The &quot;known scheme&quot; class descends from the concrete class, and acts as a base for known schemes that do conform to the generic syntax.
		It&apos;s <code>set_scheme()</code> method changes the class of the object though; that&apos;s one of the main reasons for my <abbr title="Uniform Resource Identifier">URI</abbr> <abbr title="application programming interface">API</abbr> overhaul.
		However, it&apos;s possible to change the scheme from one that conforms to the general standard to one that doesn&apos;t in the current state of the library, while it wouldn&apos;t be possible any more if I were able to use more-specific return types and chose to do so.
		More-specific return types could be useful, but I shouldn&apos;t use them where I planned to the current behaviour is as it should be.
		At least in that particular regard.
		Once I can properly implement void functions and nullable return types, I should get those put in place still.
	</p>
	<p>
		I&apos;ve got the documentation and function/method signatures/implementations updated with the exception of one file.
		Once I finish with that file, I need to go back and skim, making sure I didn&apos;t leave any residual mention of outdated exception codes, then test the throwing of all exceptions.
		Lastly, I need to update the copyright in the code of all files to add the current year and change the author name to reflect my current legal name instead of my domain.
		Once these four things are done, I should be ready for the next release.
		Oh, yeah, I should also try to get phpDocumentor running and test my documentation comments.
		I tried to get that running today, but with no success.
		I ran out of time and had to head in to work.
		I might ask for help with that.
	</p>
</section>
		<hr/>
		<p>
			Copyright © 2017 Alex Yst;
			You may modify and/or redistribute this document under the terms of the <a rel="license" href="/license/gpl-3.0-standalone.xhtml"><abbr title="GNU&apos;s Not Unix">GNU</abbr> <abbr title="General Public License version Three or later">GPLv3+</abbr></a>.
			If for some reason you would prefer to modify and/or distribute this document under other free copyleft terms, please ask me via email.
			My address is in the source comments near the top of this document.
			This license also applies to embedded content such as images.
			For more information on that, see <a href="/en/a/licensing.xhtml">licensing</a>.
		</p>
		<p>
			<abbr title="World Wide Web Consortium">W3C</abbr> standards are important.
			This document conforms to the <a href="https://validator.w3.org./nu/?doc=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2017%2F08-August%2F31.xhtml"><abbr title="Extensible Hypertext Markup Language">XHTML</abbr> 5.1</a> specification and uses style sheets that conform to the <a href="http://jigsaw.w3.org./css-validator/validator?uri=https%3A%2F%2Fy.st.%2Fen%2Fweblog%2F2017%2F08-August%2F31.xhtml"><abbr title="Cascading Style Sheets">CSS</abbr>3</a> specification.
		</p>
	</body>
</html>

